#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

typedef struct LNode
{
  ElemType data;
  struct LNode *next;
} LNode, *LinkList;

bool ListInsert(LinkList &L, int i, ElemType e);

int main()
{
  LinkList L;
  int b = ListInsert(L, 1, 10);
  printf("%d\n", b);
}

bool ListInsert(LinkList &L, int i, ElemType e)
{
  if (i < 1)
    return false;
  LNode *p;  // 指针p当前扫描到的结点
  int j = 0; // 当前p指向的是第几个结点
  p = L;     // L指向头结点，头结点是第0个结点(不存数据)

  while (p != NULL && j < i - 1) // 找到第 i-1 个结点
  {
    p = p->next;
    j++;
  }

  if (p == NULL) // i不合法
    return false;
  LinkList s = (LinkList)malloc(sizeof(LNode));
  s->data = e;
  s->next = p->next; // 交换位置
  p->next = s;
  return true;
};